<?php
/*
 * @Author: your name
 * @Date: 2021-08-22 15:57:57
 * @LastEditTime: 2021-12-18 21:37:58
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: /admin/app/common.php
 */


header('Access-Control-Allow-Origin:*');  // 响应类型
header('Access-Control-Allow-Methods:*');  // 响应头设置
header('Access-Control-Allow-Headers:*');
/**
 * 检查用户登录信息是否正确
 * @params {*} $over = 是否未登录结束程序，默认false，结束程序
 */
/**
 * 三目运算
 * @params $a 判断值
 * @params $b 替补值
 */
function fm($a, $b)
{
    return $a ? $a : $b;
}

function over($arr = [])
{
    if (\request()->isAjax()) {
        json(['code' => 401,'msg'=>'请登录'])->send();
    } else {
        response()->header(["Location"=>"/index/index/permission"])->send();
    }
    exit();
}


/**
 * @description: 验证手机号码是否符合规范
 * @param {*} $mobile
 * @return {*}
 */
function isMobile($mobile): bool
{
    if (!is_numeric($mobile)) {
        return false;
    }
    return (bool)preg_match('#^13[\d]{9}$|^14[5,7]{1}\d{8}$|^15[^4]{1}\d{8}$|^17[0,6,7,8]{1}\d{8}$|^18[\d]{9}$#', $mobile);
}


/**
 * 正则表达式验证email格式
 *
 * @param string $str 所要验证的邮箱地址
 * @return boolean
 */
function isEmail($str): bool
{
    if (!$str) {
        return false;
    }
    return (bool)preg_match('#[a-z0-9&\-_.]+@[\w\-_]+([\w\-.]+)?\.[\w\-]+#is', $str);
}

//检查一个账号是邮箱还是手机号码
function check_account_type($account)
{
    if (isEmail($account)) {
        return "mail";
    }
    if (isMobile($account)) {
        return "mobile";
    }
    return false;
}

/**错误信息打包 */
function error($code, $msg, $info = [])
{
    $info['code'] = $code;
    if (is_array($msg)) { //如果是数组则合并
        $info = array_merge($info, $msg);
    } else { //如果是字符串则加入msg
        $info['msg'] = $msg;
    }
    return json($info);
}

/**成功输出前打包 */
function success($msg, $info = [])
{
    $info['code'] = 200; //成功状态码都为200
    if (is_array($msg)) { //如果是数组则合并
        $info = array_merge($info, $msg);
    } else { //如果是字符串则加入msg
        $info['msg'] = $msg;
    }
    return json($info);
}


/**
 * @description: 一维数组去重,
 * @param {*}
 * @return {*}返回一个新的数组，内容为数组里面的key键名
 */
function arr_format($arr, $key)
{
    $tmp = [];
    foreach ($arr as $v) {
        $tmp[$v[$key]] = $v[$key];
    }
    $tmp2 = [];
    foreach ($tmp as $v) {
        array_push($tmp2, $v);
    }
    return $tmp2;
}

/**
 * @description: 将数组转换为字典对象
 * @param {*}
 * @return {*} 返回一个以传递的key为键名的字典对象
 */
function arr_to_obj($arr, $key)
{
    $userTmp = [];
    foreach ($arr as $value) {
        $userTmp[$value[$key]] = $value;
    }
    return $userTmp;
}


//判断并且创建文件夹
function is_exist_dir($dirname)
{
    $arr = explode('/', $dirname);
    $endString = $arr[count($arr) - 1];
    if (preg_match("/\./", $endString)) {
        $dirname = preg_replace("/$endString/", "", $dirname);
    }
    if (!is_dir($dirname)) {
        mkdir($dirname, 0755, true);
    }
}

function formatSize($sizeInKB): string
{
    $units = array('KB', 'MB', 'GB', 'TB');
    $unitIndex = 0;

    while ($sizeInKB >= 1000 && $unitIndex < count($units) - 1) {
        $sizeInKB /= 1000;
        $unitIndex++;
    }

    return round($sizeInKB, 2) . ' ' . $units[$unitIndex];
}
